package com.cwnu.sw.cys.core.common.intecepter;

import com.cwnu.sw.cys.core.common.intecepter.CollectionInterceptor;
import com.cwnu.sw.cys.core.common.intecepter.TokenInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
 * 拦截器配置类，用于注册自定义拦截器。
 * <p>
 * 该类实现了WebMvcConfigurer接口，允许自定义Spring MVC的配置。
 * 通过重写addInterceptors方法，将TokenInterceptor和CollectionInterceptor应用到指定路径。
 * </p>
 *
 * @author jisam
 * @version 1.0
 * @contact "jisamchan@outlook.com"
 * @date 13/02/2025
 */
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    /**
     * 令牌拦截器，用于处理与令牌相关的拦截逻辑。
     */
    @Autowired
    private TokenInterceptor tokenInterceptor;

    /**
     * 集合拦截器，用于处理与集合相关的拦截逻辑。
     */
    @Autowired
    private CollectionInterceptor collectionInterceptor;

    /**
     * 重写addInterceptors方法，注册自定义拦截器。
     * <p>
     * 该方法将TokenInterceptor和CollectionInterceptor应用到所有以"/capi/"开头的请求路径。
     * </p>
     *
     * @param registry 拦截器注册器，用于注册和管理拦截器。
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 注册TokenInterceptor，并指定其拦截路径
        registry.addInterceptor(tokenInterceptor)
                .addPathPatterns("/capi/**");
        // 注册CollectionInterceptor，并指定其拦截路径
        registry.addInterceptor(collectionInterceptor)
                .addPathPatterns("/capi/**");
    }
}
